This invention relates to the field of computer systems. More particularly, an apparatus and methods are provided for facilitating the preparation of multiple packets for transmission from a communication device (e.g., network interface circuit, channel adapter).
Computer systems and other devices for transmitting packets often use descriptors to describe or prepare the packets for transmission. With present descriptor rings, each descriptor describes just one packet or one portion of a packet to be transmitted by the transmission hardware. Thus, for each packet passed to a device driver for the hardware to transmit, a separate descriptor may be configured and forwarded to the hardware by the device driver. Or, multiple descriptors may be needed for a single packet. For each descriptor it receives from the device driver, the hardware is empowered to retrieve one packet or packet fragment from memory. When a sufficient number of descriptors have been read, it can assemble a packet and transmit it.
Although transmission rates continue to rapidly increase, the time needed to setup and tear down a descriptor is relatively constant. For example, each descriptor may require mapping between a system's virtual address space and the physical address space of its transmission hardware. Memory mapping during setup and tear down is relatively expensive in terms of time. As transmission rates increase, more and more packets must be passed to a communication device from its driver, and the use of one or more descriptors for every packet becomes more and more burdensome.